package com.xiaoming;

import com.alibaba.fastjson.JSON;
import com.xiaoming.dto.ListNode;

/*
  移除链表元素

给你一个链表的头节点 head 和一个整数 val ，请你删除链表中所有满足 Node.val == val 的节点，并返回 新的头节点 。

 *
* */
public class Q203 {

    public static void main(String[] args) {
        // 创建链表
        ListNode head = new ListNode(3);
        ListNode head2 = new ListNode(2, head);
        ListNode head3 = new ListNode(1, head2);
        // 要删除的元素
        int val = 2;
        // 初始化结果为头节点
        ListNode result = head3;
        System.out.println(JSON.toJSONString(result));
        //递归
        removeElements(result, val);
        System.out.println(JSON.toJSONString(result));
    }


// 删除链表中值为val的节点
    public static ListNode removeElements(ListNode head, int val) {
        // 如果头节点为空，直接返回null
        if (head == null) {
            return null;
        }
        // 递归删除头节点后面的节点
        head.next = removeElements(head.next, val);
        // 如果头节点的值等于val，则返回头节点的下一个节点，否则返回头节点
        return head.val == val ? head.next : head;
    }
}
